/**
 * @brief 内存过滤器是一个端点过滤器。主要用来获取经过编码的数据，也可用来做解码器
 *   通过指定编码的数据
*/
#ifndef MEMIO_H
#define MEMIO_H

#include "filterio.h"

class memio : public filterIO
{
private:
	size_t    m_len;
	char    * m_data;
public:
	memio( io_type type , filterList * l );
	virtual ~memio();

	size_t GetData( char * d )
	{
		d = m_data;
		return m_len;
	}
	/**
	 * @brief 指定数据。会引起表链回溯到头部
	 */
	void SetData( size_t len , const char * d )
	{
		m_data = (char*)d;
		m_len = len;
		OnRecv( len , d , OK );
	}

private:
	bool on_forward( size_t len , const char * date , err_code &err , size_t& rlen , char * rd ) ;
	bool on_backward( size_t len , const char * data , err_code &err , size_t& rlen , char * rd  );
};

#endif // MEMIO_H
